/**所有请求地址封装
 * Created by alice on 2016/7/11.
 */
define(['getData','components','wx'],function(getData,components,wx){
    var gm={
        isMobile:navigator.userAgent.toLocaleLowerCase().indexOf("mobile") >= -1,
        isMI:navigator.userAgent.toLocaleLowerCase().indexOf("mi") >= -1,
        isIhpone:navigator.userAgent.toLocaleLowerCase().indexOf("iphone") > -1,
        //分享
        share:function(){

        },
        ad:{
            //获取焦点图
            get:function(aduid,callback){
                getData.getJson({
                    page:"doctor",
                    inter:"getPlatformPic",
                    data:{adUuid:aduid || "customerLunBoTuId"},
                    callback:function(data){
                        if(!data){
                            components.alert("服务器出错!");
                        }
                        if(data.code==200){
                            callback && callback(data);
                        }else{
                            components.alert(data.message);
                        }
                    }
                });
            }
        },
        //内容替换
        replace:function(temp, data, regexp){
            if(!(Object.prototype.toString.call(data) === "[object Array]")) data = [data];
            var ret = [];
            for(var i=0,j=data.length;i<j;i++){
                ret.push(replaceAction(data[i]));
            }
            return ret.join("");
            function replaceAction(object){
                return temp.replace(regexp || (/\\?\{([^}]+)\}/g), function(match, name){
                    if (match.charAt(0) == '\\') return match.slice(1);
                    return (object[name] != undefined) ? object[name] : '';
                });
            }
        },
        pul:{
            //返回上一级
            returnurl:function(){

            },
            //页面重定向
            toUrl:function(url,g){
                var href = "";
                if(!g || url.indexOf("#")>-1){
                    href = url;
                }else{
                    href = gm.para.set(url,"rnd",window.______version || Math.random());
                }
                window.location.href = href;
            }
        },
        para:{
            get:function(url,para){
                var value = "",_p = para + "=";
                var url = url.split("#!")[0] || "";
                if(url.indexOf("&"+_p) > -1){
                    value = url.split("&"+_p)[1].split("&")[0];
                }
                if(url.indexOf("?"+_p) > -1){
                    value = url.split("?"+_p)[1].split("&")[0];
                }
                if(url.indexOf("#">-1)){
                    value = value.split("#")[0];
                }
                return value;
            },
            set:function(url,para,value){
                var paras = para + "=" + value;
                var v = gm.para.get(url,para);
                var _url = "";
                if(v == ""){
                    if(url.substring(url.length-1) == "?"){
                        _url = url + paras;
                    }else{
                        _url = url + (url.indexOf("?") == -1 ? "?" : "&") + paras;
                    }
                }else{
                    _url = url.replace("&"+para+"="+v,"&"+paras);
                    _url = _url.replace("?"+para+"="+v,"?"+paras);
                }
                return _url;
            }
        },
        //医生模块
        doctor:{
            getDoctor:function(){
                return localStorage.getItem("___doctorid");
            },
            //医生是否登录
            isLoginDoctor:function(){
                var getdoctor=gm.doctor.getDoctor();
                if(!getdoctor||getdoctor=="0")
                    return false;
                else
                    return true;
            },
            //获取医生个人信息
            getUserInfo:function(callback){
                var token=gm.para.get(window.location.href,"token");
                if(!gm.common.isObjUsable(token))
                    return;
                getData.getJson({
                    page:"doctor",
                    inter:"getDoctorInfo",
                    data:{token:token},
                    callback:function(_data){
                        if(_data.code=="2000")
                            callback(_data.value);
                    }
                });
            }
        },
        //患者模块
        patient:{
            isLogin:function(){
                if(!gm.patient.getPatient() || gm.patient.getPatient() == "0"){
                    return false;
                }
                return true;
            },
            /**
             * 获取患者个人信息
             */
            getCustomerInfo:function(_callback){
                var token=gm.para.get(window.location.href,"token");
                getData.getJson({
                    page:"patient",
                    inter:"getToCustomerInfo",
                    data:{token:token},
                    callback:function(data){
                        _callback(data);
                    }
                });
            },
            getPatient:function(){

            },
            //患者端添加收藏
            addFavorite:function(newsid,favoriteType,callback){
                getData.getJson({
                    page:"patient",
                    inter:"addFavorite",
                    data:{customerUuid:gm.patient.getPatient(),newsid:newsid,favoriteType:favoriteType},
                    callback:function(data){
                        //服务器传输回应
                        if(!data){
                            components.alert("服务器出错!");
                        }
                        if(data.query.success=="1"){
                            callback(data);
                            components.alert({
                                val : "收藏成功!",
                                type : "flash"
                            });
                        }else{
                            components.alert(data.query.message);
                        }
                    }
                });
            },
            //患者获取医生详情
            getDoctorInfo:function(id,callback){
                if(!id){
                    return;
                }
                var token=gm.para.get(window.location.href,"token");
                getData.getJson({
                    page:"patient",
                    inter:"detailsOfTheDoctor",
                    loading:true,
                    data:{doctorId:id,token:token},
                    callback:function(_data){
                        if(_data.code=="2000"){
                            callback(_data.value);
                        }else if(_data.code==500){
                            components.alert(_data.message);
                        }else{
                            components.alert(_data.message);
                        }
                    }
                });
            }
        },
        //共用模块
        common:{
            userShare:function(params){
                getData.getJson({
                    page:"content",
                    inter:"getSignature",
                    data:{url:params.url},
                    callback:function(data){
                        if(data.code=="2000"){
                            getSignMessCollbak(data,params);
                        }
                    }
                })
            },
            //获取视频信息
            getVedioMessage:function(id,_callback){
                var token = gm.para.get(window.location.href,"token");
                getData.getJson({
                    page:"doctor",
                    inter:"getDoctorCommonVideoInfo",
                    data:{token:token,videoId:id},
                    callback:function(data){
                        _callback(data);
                    }
                });
            },
            /**
             * 获取视频评论列表
             * @param videoId 视频id
             * @param userType 用户类型 1医生 2患者
             * @param pageNum 页数
             * @param pageSize 条数
             * @param _callback
             */
            getVideoComment:function(videoId,userType,pageNum,pageSize,_callback){
                var token = gm.para.get(window.location.href,"token");
                getData.getJson({
                    page:"content",
                    inter:"commentList",
                    data:{token:token,userType:userType,videoId:videoId,pageNum:pageNum,pageSize:pageSize},
                    callback:function(data){
                        _callback(data);
                    }
                });
            },

            /**
             * 添加评论接口
             * @param videoId 视频id
             * @param questId 评论人id
             * @param userType 用户类型
             * @param problemDesc 评论内容
             * @param _callback
             */
            addPlatformCommunication:function(videoId,userType,questId,problemDesc,_callback){
                var token = gm.para.get(window.location.href,"token");
                getData.getJson({
                    page:"content",
                    inter:"addComment",
                    method:"POST",
                    data:{token:token,userType:userType,videoId:videoId,questId:questId,problemDesc:problemDesc},
                    callback:function(data){
                        _callback(data);
                    }
                });
            },
            isWeiXin:function(){
                var ua = window.navigator.userAgent.toLowerCase();
                if(ua.match(/MicroMessenger/i) == 'micromessenger'){
                    return true;
                }else{
                    return false;
                }
            },
            /**
             * 删除url 中参数
             * @param url
             * @param ref
             * @returns {*}
             */
            delQueStr:function(url,ref){
                var str = "";
                if (url.indexOf('?') != -1) {
                    str = url.substr(url.indexOf('?') + 1);
                }
                else {
                    return url;
                }
                var arr = "";
                var returnurl = "";
                var setparam = "";
                if (str.indexOf('&') != -1) {
                    arr = str.split('&');
                    for (i in arr) {
                        if (arr[i].split('=')[0] != ref) {
                            returnurl = returnurl + arr[i].split('=')[0] + "=" + arr[i].split('=')[1] + "&";
                        }
                    }
                    return url.substr(0, url.indexOf('?')) + "?" + returnurl.substr(0, returnurl.length - 1);
                }
                else {
                    arr = str.split('=');
                    if (arr[0] == ref) {
                        return url.substr(0, url.indexOf('?'));
                    }
                    else {
                        return url;
                    }
                }
            },
            //获取用户图像
            getUserImg:function(userimg){
                var result=false;
                if(this.isObjUsable(userimg)){
                    if(this.isObjUsable(userimg.small))
                        result =userimg.small;
                    else if(this.isObjUsable(userimg.large))
                        result=userimg.large;
                }
                return result;
            },
            //根据医生性别获取医生默认头像
            sexGetDoctorDefImg:function(sex){
                var defimg="../imgs/man.png";
                if(sex==0 &&sex=="0")
                    defimg="../imgs/man.png";
                return defimg;
            },
            //根据患者性别获取患者默认头像
            sexGetPatientDefImg:function(sex){
                var defimg="../imgs/p_man.png";
                if(sex==0 &&sex=="0")
                    defimg="../imgs/p_woman.png";
                return defimg;
            },
            /**
             * 关注/取消关注
             * @param token 操作人token
             * @param collectRule 操作人：1患者 0 医生
             * @param collectType 收藏类型：0资讯，1视频，2医生
             * @param objId 收藏 的id
             * @param attentionState  关注状态 1关注，2取消
             * @param callback 回调
             */
            attention:function(token,collectRule,collectType,objId,attentionState,callback){
                getData.getJson({
                    page:"content",
                    inter:"attention",
                    loading:true,
                    method:"POST",
                    data:{token:token,collectRule:collectRule,collectType:collectType,objId:objId,attentionState:attentionState},
                    callback:function(data){
                            callback(data);
                    }
                });
            },
            /**
             * 未定义 为空，为空字符串
             * @param obj
             * @returns {boolean}
             */
            isObjUsable:function(obj){
                if(obj!=undefined && obj!=null && obj!="")
                    return true;
                else
                    return false;
            },
            /**
             * 删除收藏
             * @param token
             * @param collectType
             * @param objId
             * @param callcack
             */
            delFavorites:function(token,collectType,objId,callcack){
                getData.getJson({
                    page:"content",
                    inter:"cancelCollection",
                    data:{token:token,collectRule:0,collectType:collectType,objId:objId},
                    callback:function(data){
                        callcack(data);
                    }
                });
            },
            setTitle : function(name){
                if(!gm.isMobile){return;}
                document.title = name;
                var goto2 = 'goodm://setTitle/' +name;
                gm.pul.toUrl(goto2);
            }
        }

    };

    /**
     * 微信分享的回调
     * @param data
     */
    function getSignMessCollbak(data,params){
        //微信二次分享
        var d=data.value;
        var appId= d.appid;
        var timestamp= d.timestamp;
        var nonceStr= d.nonceStr;
        var signature= d.signature;
        var title=params.title;
        var imgUrl=params.imgUrl;
        var desc=params.desc;
        var link=params.url;
        wx.config({
            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
            appId: appId, // 必填，公众号的唯一标识
            timestamp:timestamp, // 必填，生成签名的时间戳
            nonceStr: nonceStr, // 必填，生成签名的随机串
            signature: signature,// 必填，签名，见附录1
            jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
        });
        wx.ready(function(){
            //分享到朋友圈
            wx.onMenuShareTimeline({
                title: title+" "+desc, // 分享标题
                link: link, // 分享链接
                imgUrl: imgUrl, // 分享图标
                success: function () {
                    // 用户确认分享后执行的回调函数
                },
                cancel: function () {
                    // 用户取消分享后执行的回调函数
                }
            });
            //分享给朋友
            wx.onMenuShareAppMessage({
                title: title, // 分享标题
                desc: desc, // 分享描述
                link: link, // 分享链接
                imgUrl: imgUrl, // 分享图标
                type: '', // 分享类型,music、video或link，不填默认为link
                dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
                success: function () {
                    // 用户确认分享后执行的回调函数
                },
                cancel: function () {
                    // 用户取消分享后执行的回调函数
                }
            });
        });
    }

    return{
        gm:gm
    }
});
